home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Trial / ConceptDraw NetDiagrammer / data1.cab / Samples__Basic / Solutions / OrgChart / OrgDBConverter.cdb < prev    next >
Text File  |  2006-02-08  |  18KB  |  365 lines

  1. '╨ô╤Ç╤â╨┐╨┐╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓, ╤ü╨╛╨┤╨╡╤Ç╨╢╨░╤ë╨╕╤à ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░╤à. ╨Ü╨░╨╢╨┤╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╤Ä╤é ╨┤╨░╨╜╨╜╤ï╨╡
  2. '╤ü ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╤ï╨╝ ╨╕╨╜╨┤╨╡╨║╤ü╨╛╨╝. ╨¥╤â╨╗╨╡╨▓╨╛╨╣ ╨╕╨╜╨┤╨╡╨║╤ü ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╨╡╤é ╤ä╨╕╨║╤é╨╕╨▓╨╜╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å.
  3. '╨Æ╨▓╨╛╨┤╨╕╤é╤ü╤Å ╨┤╨╗╤Å ╤â╨┐╤Ç╨╛╤ë╨╡╨╜╨╕╤Å ╨░╨╗╨│╨╛╤Ç╨╕╤é╨╝╨░. ╨á╨╡╨░╨╗╤î╨╜╤ï╨╡ ╤Ç╤â╨║╨╛╨▓╨╛╨┤╨╕╤é╨╡╨╗╨╕ ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å ╤ü╤ç╨╕╤é╨░╤Ä╤é╤ü╤Å ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╨╝╨╕
  4. '╤ì╤é╨╛╨│╨╛ ╤â╤ü╨╗╨╛╨▓╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░.
  5.  
  6. 'ID ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  7. Dim asID() As String
  8. 'ID ╨╜╨╡╨┐╨╛╤ü╤Ç╨╡╨┤╤ü╤é╨▓╨╡╨╜╨╜╨╛╨│╨╛ ╨╜╨░╤ç╨░╨╗╤î╨╜╨╕╨║╨░ ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  9. Dim asChiefID() As String
  10. '╨ñ╨ÿ╨₧ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  11. Dim asName() As String
  12. '╨ö╨╛╨╗╨╢╨╜╨╛╤ü╤é╤î ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  13. Dim asPost() As String
  14. '╨É╨┤╤Ç╨╡╤ü ╤ì╨╗╨╡╨║╤é╤Ç╨╛╨╜╨╜╨╛╨╣ ╨┐╨╛╤ç╤é╤ï ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  15. Dim asEMail() As String
  16. '╨ú╤Ç╨╛╨▓╨╡╨╜╤î ╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕ ╨╛╨▒╤è╨╡╨║╤é╨░, ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤ë╨╡╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░, ╨▓ ╨╛╨▒╤ë╨╡╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕
  17. Dim aiLevel() As Integer
  18. '╨¿╨╕╤Ç╨╕╨╜╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  19. Dim adBranchWidth() As Double
  20. '╨Æ╤ï╤ü╨╛╤é╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  21. Dim adBranchHeight() As Double
  22. '╨ñ╨╗╨░╨│, ╤â╨║╨░╨╖╤ï╨▓╨░╤Ä╤ë╨╕╨╣, ╤ç╤é╨╛ ╨┤╨░╨╜╨╜╤ï╨╣ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║ ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╤é ╨▓╨╡╤é╨▓╤î, ╨║╨╛╤é╨╛╤Ç╤â╤Ä ╤ü╨╗╨╡╨┤╤â╨╡╤é ╨╕╨╖╨╛╨▒╤Ç╨░╨╖╨╕╤é╤î ╨╜╨░ ╨╛╤é╨┤╨╡╨╗╤î╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡
  23. Dim abNewPage() As Boolean
  24. '╨Ü╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  25. Dim asSubordCount() As Integer
  26. '╨ö╨▓╤â╨╝╨╡╤Ç╨╜╤ï╨╣ ╨╝╨░╤ü╤ü╨╕╨▓. ╨ö╨╗╤Å ╨║╨░╨╢╨┤╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╤ü╨╛╨┤╨╡╤Ç╨╢╨╕╤é ╨╕╨╜╨┤╨╡╨║╤ü╤ï ╨▓╤ü╨╡╤à ╨╡╨│╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à. ╨ƒ╨╛╨╖╨▓╨╛╨╗╤Å╨╡╤é 
  27. '╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╤é╤î ╤ü╤à╨╡╨╝╤â ╨║╨░╨║ ╨┤╤Ç╨╡╨▓╨╛╨▓╨╕╨┤╨╜╤â╤Ä ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â. 
  28. Dim asSubordinates() As Integer
  29. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╤ì╤é╨╕╤à ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓
  30. Dim iUBound As Integer
  31. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╨▓╤é╨╛╤Ç╨╛╨╣ ╤Ç╨░╨╖╨╝╨╡╤Ç╨╜╨╛╤ü╤é╨╕ ╨╝╨░╤ü╤ü╨╕╨▓╨░ asSubordinates
  32. Dim iUBound2 As Integer             
  33.  
  34. '╨¥╨░╨╖╨▓╨░╨╜╨╕╨╡ ╨║╨╛╨╝╨┐╨░╨╜╨╕╨╕
  35. Dim strOrgName As String
  36.  
  37. '╨ó╨╡╨║╤ü╤é╨╛╨▓╤ï╨╣ ╨▒╤â╤ä╨╡╤Ç, ╨▓ ╨║╨╛╤é╨╛╤Ç╤ï╨╣ ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╤Ä╤é╤ü╤Å ╤ü╨╕╨╝╨▓╨╛╨╗╤ï ╨╕╨╖ XML-╤ä╨░╨╣╨╗╨░
  38. Dim strBuffer As String
  39.  
  40.  
  41. Declare Sub ConvertTXTToXML()
  42. Declare Function BuildOrgTreeFromTXT(ByRef strTextFileName As String) As Boolean
  43. Declare Function SaveDataInXML(ByRef strXMLFileName As String) As Boolean
  44. Declare Function ReplaceSymbols(ByVal strText As String) As String
  45. Declare Function SavePersonDataInXML(ByVal intFileNumber As Integer, ByVal intIndexInArray As Integer, ByVal intTabCount As Integer) As Boolean
  46. Declare Sub ConvertXMLToTXT()
  47. Declare Function BuildOrgTreeFromXML(ByRef strXMLFileName As String) As Boolean
  48. Declare Sub RedimArrays(ByVal intUBound As Integer, ByVal intUBound2 As Integer)
  49. Declare Function ReReplaceSymbols(ByRef strText As String) As String
  50. Declare Sub ReplaceChr10And13(ByRef strText As String)
  51. Declare Function GetXMLTextValue(ByRef strTagValue As String, ByVal intFileNumber As Integer) As Integer
  52. Declare Function GetXMLTag(ByRef strTag As String, ByVal intFileNumber As Integer) As Integer
  53. Declare Function SaveDataInTXT(ByRef strTXTFileName As String) As Boolean
  54.  
  55. #INCLUDE "consts.cdb"
  56. #INCLUDE "loadTXTFunctions.cdb"
  57. #INCLUDE "loadXMLFunctions.cdb"
  58.  
  59.  
  60. '========================================================================================================================
  61. '========================================================================================================================
  62.  
  63. '╨í╨╛╨╖╨┤╨░╨╜╨╕╨╡ ╨┐╨╛╨╗╤î╨╖╨╛╨▓╨░╤é╨╡╨╗╤î╤ü╨║╨╛╨│╨╛ ╨╝╨╡╨╜╤Ä. ╨É╨▓╤é╨╛╨╝╨░╤é╨╕╤ç╨╡╤ü╨║╨╕ ╨▓╤ï╨╖╤ï╨▓╨░╨╡╤é╤ü╤Å ╨┐╤Ç╨╕ ╨╛╤é╨║╤Ç╤ï╤é╨╕╨╕ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨╕╨╖
  64. '╨╝╨░╨║╤Ç╨╛╤ü╨░ ╤â╤Ç╨╛╨▓╨╜╤Å ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  65. Sub CreateUserMenu()
  66.     Dim custMenu As Menu
  67.     Dim newMenuItem As MenuItem
  68.     
  69.     Set custMenu = thisDoc.CustomMenu
  70.     custMenu.Caption = "E&xport DataBase"
  71.     custMenu.RemoveAll()
  72.  
  73.     Set newMenuItem = custMenu.AddMenuItem(0)
  74.     newMenuItem.Caption = "Export &Text DataBase To XML OrgChart Format"
  75.     newMenuItem.SetCmdProcessing("ConvertTXTToXML")
  76.  
  77.     Set newMenuItem = custMenu.AddMenuItem(0)
  78.     newMenuItem.Caption = "Export &XML OrgChart Format To Text DataBase"
  79.     newMenuItem.SetCmdProcessing("ConvertXMLToTXT")
  80. End Sub
  81.  
  82. '========================================================================================================================
  83. '========================================================================================================================
  84.  
  85. '╨₧╤ü╨╜╨╛╨▓╨╜╨░╤Å ╤â╨┐╤Ç╨░╨▓╨╗╤Å╤Ä╤ë╨░╤Å ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╨░, ╨┐╤Ç╨╡╨╛╨▒╤Ç╨░╨╖╤â╤Ä╤ë╨░╤Å ╨┤╨░╨╜╨╜╤ï╨╡ ╨╕╨╖ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨╛╤Ç╨╝╨░╤é╨░ ╨▓ XML-╤ä╨╛╤Ç╨╝╨░╤é
  86. Sub ConvertTXTToXML()
  87. On Error GoTo ErrHandler
  88.     Dim strTextFileName As String
  89.     Dim strXMLFileName As String
  90.     Dim bContinue As Boolean
  91.     Dim bReturnedVal As Boolean
  92.  
  93.     '╨ƒ╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░, ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤ë╨╡╨│╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕.
  94.     strTextFileName = GetOpenFileName("txt","Text Files")
  95.     If strTextFileName <> "" Then
  96.         '╨ò╤ü╨╗╨╕ ╨╕╨╝╤Å ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛, ╨┐╤Ç╨╡╨┤╨╗╨╛╨╢╨╕╤é╤î ╨╕╨╝╤Å-╨┐╨╛-╤â╨╝╨╛╨╗╤ç╨░╨╜╨╕╤Ä ╨┤╨╗╤Å ╨╜╨╛╨▓╨╛╨│╨╛ XML-╤ä╨░╨╣╨╗╨░...
  97.         If Right(strTextFileName, 4) = ".txt" Then
  98.             strXMLFileName = Left(strTextFileName, Len(strTextFileName) - 4)
  99.         Else
  100.             strXMLFileName = strTextFileName
  101.         End If
  102.         '...╨╕ ╨┐╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å XML-╤ä╨░╨╣╨╗╨░ ╨┤╨╗╤Å ╨╖╨░╨┐╨╕╤ü╨╕.
  103.         strXMLFileName = GetSaveFileName(constrXMLFileExt, "CDBasic OrgChart XML Files",,strXMLFileName)
  104.         Do
  105.             bContinue = True
  106.             '╨ò╤ü╨╗╨╕ ╤ä╨░╨╣╨╗ ╤â╨╢╨╡ ╤ü╤â╤ë╨╡╤ü╤é╨▓╤â╨╡╤é...
  107.             If Dir(strXMLFileName) <> "" Then
  108.                 '...╨┐╤Ç╨╛╨▓╨╡╤Ç╨╕╤é╤î, ╨╜╨╡ ╤Å╨▓╨╗╤Å╨╡╤é╤ü╤Å ╨╗╨╕ ╤ä╨░╨╣╨╗ Read-Only.
  109.                 If (GetAttr(strXMLFileName ) And cdbReadOnly) > 0 Then
  110.                     '╨ò╤ü╨╗╨╕ ╤ä╨░╨╣╨╗ Read-Only, ╨╖╨░╨┐╤Ç╨╛╤ü╨╕╤é╤î ╨┐╨╛╨┤╤é╨▓╨╡╤Ç╨╢╨┤╨╡╨╜╨╕╨╡ ╨╜╨░ ╨┐╨╡╤Ç╨╡╨╖╨░╨┐╨╕╤ü╤î ╤ü╨╛╨┤╨╡╤Ç╨╢╨╕╨╝╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░.
  111.                     bContinue = (MsgBox(sconstReadOnlyWarning, cdbInformation + cdbOKCancel) = cdbOK)
  112.                     If Not bContinue Then 
  113.                         strXMLFileName = GetSaveFileName(constrXMLFileExt, "CDBasic OrgChart XML Files",,strXMLFileName)
  114.                     End If
  115.                 End If
  116.             End If
  117.         Loop Until bContinue
  118.         If strXMLFileName <> "" Then
  119.         '╨ò╤ü╨╗╨╕ ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛ ╨╕╨╝╤Å ╤ä╨░╨╣╨╗╨░ ╨┤╨╗╤Å ╤ì╨║╤ü╨┐╨╛╤Ç╤é╨░ ╨▓ XML, ╤é╨╛ ╨╖╨░╤ç╨╕╤é╨░╤é╤î ╨┤╨░╨╜╨╜╤ï╨╡ ╨╕╨╖ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░.
  120.             If BuildOrgTreeFromTXT(strTextFileName) Then
  121.                 '╨ò╤ü╨╗╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╖╨░╤ç╨╕╤é╨░╨╜╤ï ╤â╤ü╨┐╨╡╤ê╨╜╨╛, ╨╖╨░╨┐╨╕╤ü╨░╤é╤î ╤ì╤é╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨▓ XML-╤ä╨╛╤Ç╨╝╨░╤é╨╡.
  122.                 If SaveDataInXML(strXMLFileName) Then
  123.                     '╨ò╤ü╨╗╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╡╤ë╨╡ ╨╕ ╨╖╨░╨┐╨╕╤ü╨░╨╗╨╕╤ü╤î ╤â╤ü╨┐╨╡╤ê╨╜╨╛, ╤ü╨╛╨╛╨▒╤ë╨╕╤é╤î ╨╛ ╨▓╤ï╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╕ ╨╖╨░╨┤╨░╤ç╨╕.
  124.                     MsgBox("Textovaja baza dannih bila uspeshno konvertirovana v XML-format.")
  125.                 End If
  126.             End If
  127.         End If
  128.     End If    
  129.     Exit Sub
  130.  
  131. ErrHandler:
  132.     MsgBox ("In performing the macros, an error has occured.", cdbExclamation)
  133.  
  134. End Sub
  135.  
  136. '========================================================================================================================
  137. '========================================================================================================================
  138.  
  139. '╨₧╤ü╨╜╨╛╨▓╨╜╨░╤Å ╤â╨┐╤Ç╨░╨▓╨╗╤Å╤Ä╤ë╨░╤Å ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╨░, ╨┐╤Ç╨╡╨╛╨▒╤Ç╨░╨╖╤â╤Ä╤ë╨░╤Å ╨┤╨░╨╜╨╜╤ï╨╡ ╨╕╨╖ XML-╤ä╨╛╤Ç╨╝╨░╤é╨░ ╨▓ ╤ä╨╛╤Ç╨╝╨░╤é ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╤ï ╨┤╨░╨╜╨╜╤ï╤à.
  140. Sub ConvertXMLToTXT()
  141. On Error GoTo ErrHandler
  142.     Dim strTXTFileName As String
  143.     Dim strXMLFileName As String
  144.     Dim bContinue As Boolean
  145.     Dim bReturnedVal As Boolean
  146.  
  147.     '╨ƒ╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å XML- ╤ä╨░╨╣╨╗╨░, ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤ë╨╡╨│╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕.
  148.     strXMLFileName = GetOpenFileName(constrXMLFileExt,"CDBasic OrgChart XML Files")
  149.     If strXMLFileName <> "" Then 
  150.         '╨ò╤ü╨╗╨╕ ╨╕╨╝╤Å ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛, ╨┐╤Ç╨╡╨┤╨╗╨╛╨╢╨╕╤é╤î ╨╕╨╝╤Å-╨┐╨╛-╤â╨╝╨╛╨╗╤ç╨░╨╜╨╕╤Ä ╨┤╨╗╤Å ╨╜╨╛╨▓╨╛╨│╨╛ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░...
  151.         If Right(strXMLFileName, 4) = "." & constrXMLFileExt Then
  152.             strTXTFileName = Left(strXMLFileName, Len(strXMLFileName) - 4)
  153.         Else
  154.             strTXTFileName = strXMLFileName
  155.         End If
  156.         '...╨╕ ╨┐╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░ ╨┤╨╗╤Å ╨╖╨░╨┐╨╕╤ü╨╕.
  157.         strTXTFileName = GetSaveFileName("txt", "Text Files",,strTXTFileName)
  158.         Do
  159.             bContinue = True
  160.             '╨ò╤ü╨╗╨╕ ╤ä╨░╨╣╨╗ ╤â╨╢╨╡ ╤ü╤â╤ë╨╡╤ü╤é╨▓╤â╨╡╤é...
  161.             If Dir(strTXTFileName) <> "" Then
  162.                 '...╨┐╤Ç╨╛╨▓╨╡╤Ç╨╕╤é╤î, ╨╜╨╡ ╤Å╨▓╨╗╤Å╨╡╤é╤ü╤Å ╨╗╨╕ ╤ä╨░╨╣╨╗ Read-Only.
  163.                 If (GetAttr(strTXTFileName ) And cdbReadOnly) > 0 Then
  164.                     '╨ò╤ü╨╗╨╕ ╤ä╨░╨╣╨╗ Read-Only, ╨╖╨░╨┐╤Ç╨╛╤ü╨╕╤é╤î ╨┐╨╛╨┤╤é╨▓╨╡╤Ç╨╢╨┤╨╡╨╜╨╕╨╡ ╨╜╨░ ╨┐╨╡╤Ç╨╡╨╖╨░╨┐╨╕╤ü╤î ╤ü╨╛╨┤╨╡╤Ç╨╢╨╕╨╝╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░.
  165.                     bContinue = (MsgBox(sconstReadOnlyWarning, cdbInformation + cdbOKCancel) = cdbOK)
  166.                     If Not bContinue Then 
  167.                         strTXTFileName = GetSaveFileName("txt", "Text Files",,strTXTFileName)
  168.                     End If
  169.                 End If
  170.             End If
  171.         Loop Until bContinue
  172.         If strTXTFileName <> "" Then
  173.         '╨ò╤ü╨╗╨╕ ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛ ╨╕╨╝╤Å ╤ä╨░╨╣╨╗╨░ ╨┤╨╗╤Å ╤ì╨║╤ü╨┐╨╛╤Ç╤é╨░ ╨▓ ╤ä╨╛╤Ç╨╝╨░╤é ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╤ï, ╤é╨╛ ╨╖╨░╤ç╨╕╤é╨░╤é╤î ╨┤╨░╨╜╨╜╤ï╨╡ ╨╕╨╖ XML-╤ä╨░╨╣╨╗╨░.
  174.             If BuildOrgTreeFromXML(strXMLFileName) Then
  175.                 '╨ò╤ü╨╗╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╖╨░╤ç╨╕╤é╨░╨╜╤ï ╤â╤ü╨┐╨╡╤ê╨╜╨╛, ╨╖╨░╨┐╨╕╤ü╨░╤é╤î ╤ì╤é╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╝ ╤ä╨╛╤Ç╨╝╨░╤é╨╡.
  176.                 If SaveDataInTXT(strTXTFileName) Then
  177.                     '╨ò╤ü╨╗╨╕ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╡╤ë╨╡ ╨╕ ╨╖╨░╨┐╨╕╤ü╨░╨╗╨╕╤ü╤î ╤â╤ü╨┐╨╡╤ê╨╜╨╛, ╤ü╨╛╨╛╨▒╤ë╨╕╤é╤î ╨╛ ╨▓╤ï╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╕ ╨╖╨░╨┤╨░╤ç╨╕.
  178.                     MsgBox("XML baza dannih bila uspeshno konvertirovana v textovij format.")
  179.                 End If
  180.             End If
  181.         End If
  182.     End If    
  183.     Exit Sub
  184.  
  185. ErrHandler:
  186.     MsgBox ("In performing the macros, an error has occured.", cdbExclamation)
  187. End Sub
  188.  
  189. '========================================================================================================================
  190. '========================================================================================================================
  191.  
  192. '╨í╨╛╤à╤Ç╨░╨╜╤Å╨╡╤é ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╨╡ ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕ ╨▓ XML-╤ä╨╛╤Ç╨╝╨░╤é╨╡
  193. Function SaveDataInXML(ByRef strXMLFileName As String) As Boolean
  194. On Error GoTo ErrHandleSaveDataXML
  195. Dim intFileNumber As Integer
  196. Dim fNoError As Boolean
  197. Dim i As Integer
  198.  
  199. fNoError = True    
  200. '╨₧╤é╨║╤Ç╤ï╤é╤î ╤ä╨░╨╣╨╗ ╨┤╨╗╤Å ╨╖╨░╨┐╨╕╤ü╨╕
  201. intFileNumber = FreeFile()
  202. Open strXMLFileName For Output As #intFileNumber
  203.  
  204. '╨ù╨░╨┐╨╕╤ü╨░╤é╤î ╨╖╨░╨│╨╛╨╗╨╛╨▓╨╛╨║ XML
  205. Print #intFileNumber, "<?xml version='1.0' ?>"  & Chr(13) & Chr(10) & Chr(13) & Chr(10)
  206. Print #intFileNumber, 
  207. Print #intFileNumber, "<" & constrOrgChartTag & "  Version='100'>"
  208.  
  209. i = 0
  210. '╨ö╨╗╤Å ╨▓╤ü╨╡╤à ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â╤ü╨╗╨╛╨▓╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╤ü ╨╜╤â╨╗╨╡╨▓╤ï╨╝ ╨╕╨╜╨┤╨╡╨║╤ü╨╛╨╝ (╤Ç╨╡╨░╨╗╤î╨╜╨╛ ╤ì╤é╨╛ ╤Ç╤â╨║╨╛╨▓╨╛╨┤╨╕╤é╨╡╨╗╨╕ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å)
  211. '╨╖╨░╨┐╨╕╤ü╨░╤é╤î ╨▓ XML-╤ä╨░╨╣╨╗ ╨╕╤à ╨┤╨░╨╜╨╜╤ï╨╡. 
  212. Do While i<=asSubordCount(0)-1 And fNoError
  213.     '╨Æ╤ï╨╖╨╛╨▓ ╤Ç╨╡╨║╤â╤Ç╤ü╨╕╨▓╨╜╨╛╨╣ ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╤ï SavePersonDataInXML. ╨ù╨░╨┐╨╕╤ü╤ï╨▓╨░╨╡╤é ╨▓ ╤ä╨░╨╣╨╗ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛╨▒ ╨╛╨┤╨╜╨╛╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╡
  214.     '╨╕ ╨▓╤ü╨╡╤à ╨╡╨│╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à, ╨╡╤ü╨╗╨╕ ╨╛╨╜╨╕ ╤ü╤â╤ë╨╡╤ü╤é╨▓╤â╤Ä╤é.
  215.     fNoError = SavePersonDataInXML(intFileNumber, asSubordinates(0, i), 1)
  216.     i=i+1
  217. Loop
  218.  
  219. '╨ù╨░╨▓╨╡╤Ç╤ê╨╡╨╜╨╕╨╡ ╨╖╨░╨┐╨╕╤ü╨╕ XML
  220. Print #intFileNumber, "</" & constrOrgChartTag & ">"
  221.  
  222. Close #intFileNumber
  223. SaveDataInXML = fNoError 
  224. Exit Function
  225. ErrHandleSaveDataXML:
  226.     MsgBox ("Oshibka pri zapisi v fail.", cdbExclamation)
  227.     SaveDataInXML = False
  228.     Exit Function
  229. End Function
  230.  
  231. '========================================================================================================================
  232. '========================================================================================================================
  233.  
  234. '╨í╨╛╤à╤Ç╨░╨╜╤Å╨╡╤é ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╨╡ ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕ ╨▓ ╤ä╨╛╤Ç╨╝╨░╤é╨╡ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╤ï ╨┤╨░╨╜╨╜╤ï╤à
  235. Function SaveDataInTXT(ByRef strTXTFileName As String) As Boolean
  236. On Error GoTo ErrHandleSaveDataTXT
  237. Dim intFileNumber As Integer
  238. Dim i As Integer
  239. Dim j As Integer
  240. Dim strPrnString As String
  241.  
  242. '╨₧╤é╨║╤Ç╤ï╤é╤î ╤ä╨░╨╣╨╗ ╨┤╨╗╤Å ╨╖╨░╨┐╨╕╤ü╨╕
  243. intFileNumber = FreeFile()
  244. Open strTXTFileName For Output As #intFileNumber
  245.  
  246. '╨ö╨╗╤Å ╨║╨░╨╢╨┤╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╖╨░╨┐╨╕╤ü╨░╤é╤î ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╤ï╨╣ ╤ä╨░╨╣╨╗ ╨╖╨░╨┐╨╕╤ü╤î ╤ü ╨╡╨│╨╛ ╨┤╨░╨╜╨╜╤ï╨╝╨╕. 
  247. '╨ú╤ü╨╗╨╛╨▓╨╜╤ï╨╣ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║ ╤ü ╨╜╤â╨╗╨╡╨▓╤ï╨╝ ╨╕╨╜╨┤╨╡╨║╤ü╨╛╨╝ ╨╜╨╡ ╤â╤ç╨╕╤é╤ï╨▓╨░╨╡╤é╤ü╤Å.
  248. For i=1 To iUBound
  249.     strPrnString = ""
  250.     '╨ñ╨╛╤Ç╨╝╨╕╤Ç╤â╨╡╨╝ ╤ü╤é╤Ç╨╛╨║╤â ╤ü ╨┤╨░╨╜╨╜╤ï╨╝╨╕ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░.
  251.     '╨ƒ╨╛ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╤â ╨╕╤ü╨┐╨╛╨╗╤î╨╖╤â╤Ä╤ë╨╕╤à╤ü╤Å ╨▓ ╤ä╨╛╤Ç╨╝╨░╤é╨╡ ╨┐╨╛╨╗╨╡╨╣ ╤ü╨║╨╗╨╡╨╕╨▓╨░╨╡╨╝ ╨┤╨░╨╜╨╜╤ï╨╡ ╨▓ ╤ü╤é╤Ç╨╛╨║╤â.
  252.     For j=1 To conintFieldsCount 
  253.         Select Case j
  254.         Case conintIDPos 
  255.             strPrnString = strPrnString & asID(i) & constrCharSeparator 
  256.         Case conintNamePos 
  257.             strPrnString = strPrnString & asName(i) & constrCharSeparator  
  258.         Case conintChiefIDPos 
  259.             strPrnString = strPrnString & asChiefID(i) & constrCharSeparator  
  260.         Case conintPostPos 
  261.             strPrnString = strPrnString & asPost(i) & constrCharSeparator  
  262.         Case conintEMailPos 
  263.             strPrnString = strPrnString & asEMail(i) & constrCharSeparator  
  264.         End Select
  265.     Next
  266.     '╨₧╤é ╤ü╤é╤Ç╨╛╨║╨╕ ╨╛╤é╨▒╤Ç╨░╤ü╤ï╨▓╨░╨╡╨╝ ╨┐╨╛╤ü╨╗╨╡╨┤╨╜╨╕╨╣ ╤ü╨╕╨╝╨▓╨╛╨╗ ╤Ç╨░╨╖╨┤╨╡╨╗╨╕╤é╨╡╨╗╤î ╨┐╨╛╨╗╨╡╨╣.
  267.     strPrnString = Left$(strPrnString, Len(strPrnString) - 1)
  268.     Print #intFileNumber, strPrnString 
  269. Next
  270.  
  271. Close #intFileNumber
  272. SaveDataInTXT = True
  273. Exit Function
  274. ErrHandleSaveDataTXT:
  275.     MsgBox ("Oshibka pri zapisi v fail.", cdbExclamation)
  276.     SaveDataInTXT = False
  277.     Exit Function
  278. End Function
  279.  
  280. '========================================================================================================================
  281. '========================================================================================================================
  282.  
  283. '╨á╨╡╨║╤â╤Ç╤ü╨╕╨▓╨╜╨░╤Å ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╨░. ╨ù╨░╨┐╨╕╤ü╤ï╨▓╨░╨╡╤é ╨▓ ╤ä╨░╨╣╨╗ ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛╨▒ ╨╛╨┤╨╜╨╛╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╡
  284. '╨╕ ╨▓╤ü╨╡╤à ╨╡╨│╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à, ╨╡╤ü╨╗╨╕ ╨╛╨╜╨╕ ╤ü╤â╤ë╨╡╤ü╤é╨▓╤â╤Ä╤é.
  285. Function SavePersonDataInXML(ByVal intFileNumber As Integer, ByVal intIndexInArray As Integer, ByVal intTabCount As Integer) As Boolean
  286. On Error GoTo ErrHandleSavePerson
  287.     Dim i As Integer
  288.     Dim fNoError As Boolean
  289.     fNoError = True
  290.     Print #intFileNumber, String$(intTabCount, Chr(9)) & "<" & constrPersonTag & ">"
  291.     
  292.     '╨ò╤ü╨╗╨╕ ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╡ ╤ì╨╗╨╡╨╝╨╡╨╜╤é╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨░ ╨╜╨╡ ╤Å╨▓╨╗╤Å╨╡╤é╤ü╤Å ╨╜╤â╨╗╨╡╨▓╨╛╨╣ ╤ü╤é╤Ç╨╛╨║╨╛╨╣, ╨╖╨░╨┐╨╕╤ü╤ï╨▓╨░╨╡╨╝ ╨▓ ╤ä╨░╨╣╨╗
  293.     '╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╤Ä╤ë╨╕╨╣ ╤é╤ì╨│. ╨ƒ╤Ç╨╕ ╤ì╤é╨╛╨╝ ╤ü╨╕╨╝╨▓╨╛╨╗╤ï, ╨║╨╛╤é╨╛╤Ç╤ï╨╡ ╨▓ XML ╤Å╨▓╨╗╤Å╤Ä╤é╤ü╤Å ╤ü╨╗╤â╨╢╨╡╨▒╨╜╤ï╨╝╨╕, ╨╖╨░╨╝╨╡╨╜╤Å╤Ä╤é╤ü╤Å ╨╛╨┐╨╕╤ü╨░╨╜╨╕╤Å╨╝╨╕.
  294.     If asName(intIndexInArray)<>"" Then
  295.         Print #intFileNumber, String$(intTabCount+1, Chr(9)) & "<" & constrNameTag & ">" & ReplaceSymbols(asName(intIndexInArray)) & "</" & constrNameTag & ">"
  296.     End If
  297.     
  298.     If asPost(intIndexInArray)<>"" Then
  299.         Print #intFileNumber, String$(intTabCount+1, Chr(9)) & "<" & constrPostTag & ">" & ReplaceSymbols(asPost(intIndexInArray)) & "</" & constrPostTag & ">"
  300.     End If
  301.  
  302.     If asEMail(intIndexInArray)<>"" Then
  303.         Print #intFileNumber, String$(intTabCount+1, Chr(9)) & "<" & constrEMailTag & ">" & ReplaceSymbols(asEMail(intIndexInArray)) & "</" & constrEMailTag & ">"
  304.     End If
  305.     
  306.     '╨ò╤ü╨╗╨╕ ╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╡╤ü╤é╤î ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╨╡, ╨▓╤ï╨╖╤ï╨▓╨░╨╡╨╝ ╤ì╤é╤â ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╤â ╤ü╨╜╨╛╨▓╨░ ╨┤╨╗╤Å ╨║╨░╨╢╨┤╨╛╨│╨╛ ╨╕╨╖ ╨╜╨╕╤à.
  307.     If asSubordCount(intIndexInArray) > 0 Then
  308.         Print #intFileNumber, String$(intTabCount+1, Chr(9)) & "<" & constrSubordinatesTag & ">"
  309.         i=0
  310.         Do While i<=asSubordCount(intIndexInArray)-1 And fNoError 
  311.             fNoError = SavePersonDataInXML(intFileNumber, asSubordinates(intIndexInArray, i), intTabCount + 2)
  312.             i=i+1
  313.         Loop
  314.         Print #intFileNumber, String$(intTabCount+1, Chr(9)) & "</" & constrSubordinatesTag & ">"
  315.     End If
  316.     
  317.     Print #intFileNumber, String$(intTabCount, Chr(9)) & "</" & constrPersonTag & ">"
  318.     SavePersonDataInXML=fNoError
  319.     Exit Function 
  320. ErrHandleSavePerson:
  321.     MsgBox ("Oshibka pri zapisi v fail.", cdbExclamation)
  322.     SavePersonDataInXML = False
  323.     Exit Function
  324. End Function
  325.  
  326. '========================================================================================================================
  327. '========================================================================================================================
  328.  
  329. '╨ñ╤â╨╜╨║╤å╨╕╤Å ╨╖╨░╨╝╨╡╨╜╤Å╨╡╤é ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╤ü╤é╤Ç╨╛╨║╨╡ ╤ü╨╕╨╝╨▓╨╛╨╗╤ï, ╤Å╨▓╨╗╤Å╤Ä╤ë╨╕╨╡╤ü╤Å ╤ü╨╗╤â╨╢╨╡╨▒╨╜╤ï╨╝╨╕ ╨▓ XML, ╨╕╤à ╨╛╨┐╨╕╤ü╨░╨╜╨╕╤Å╨╝╨╕.
  330. Function ReplaceSymbols(ByVal strText As String) As String
  331.     Dim iFindPos As Integer
  332.     
  333.     iFindPos = InStr(strText, "&")
  334.     Do While iFindPos > 0
  335.         strText = Left(strText, iFindPos - 1) & "&" & Right(strText, Len(strText) - iFindPos)
  336.         iFindPos = InStr(iFindPos + 1, strText, "&")
  337.     Loop
  338.     
  339.     iFindPos = InStr(strText, """")
  340.     Do While iFindPos > 0
  341.         strText = Left(strText, iFindPos - 1) & """ & Right(strText, Len(strText) - iFindPos)
  342.         iFindPos = InStr(iFindPos + 1, strText, """")
  343.     Loop
  344.     
  345.     iFindPos = InStr(strText, "'")
  346.     Do While iFindPos > 0
  347.         strText = Left(strText, iFindPos - 1) & "'" & Right(strText, Len(strText) - iFindPos)
  348.         iFindPos = InStr(iFindPos + 1, strText, "'")
  349.     Loop
  350.     
  351.     iFindPos = InStr(strText, "<")
  352.     Do While iFindPos > 0
  353.         strText = Left(strText, iFindPos - 1) & "<" & Right(strText, Len(strText) - iFindPos)
  354.         iFindPos = InStr(iFindPos + 1, strText, "<")
  355.     Loop
  356.     
  357.     iFindPos = InStr(strText, ">")
  358.     Do While iFindPos > 0
  359.         strText = Left(strText, iFindPos - 1) & ">" & Right(strText, Len(strText) - iFindPos)
  360.         iFindPos = InStr(iFindPos + 1, strText, ">")
  361.     Loop
  362.     
  363.     ReplaceSymbols = strText
  364.     
  365. End Function